1. Field of the Invention
The present invention relates generally to firewalls and peer to peer connections. More specifically, the present invention relates to a system and method for establishing peer to peer (P2P) connections between PCS and smart phones or other devices, including personal computers, over a network that obstructs the straightforward establishment of such P2P connections using means such as firewalls and network address translation (NAT) servers.
2. Description of the Related Art
This section is intended to provide a background or context. The description herein may include concepts that could be pursued, but are not necessarily ones that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, what is described in this section is not prior art to the claims in this application and is not admitted to be prior art by inclusion in this section.
The majority of devices on the Internet, whether stationary (e.g., personal computers) or mobile (e.g., smart phones), are connected to the Internet through network connections offered by some Internet Service Provider (ISP) or some Cellular Network Operator (CNO). The traditional model for accessing content over the Internet is centered around Web servers: content is placed by content providers on Web servers operated by service providers (often ISPs and CNOs assume both roles of content and service provider); then, users interested in specific content access the corresponding Web server(s) to obtain it. In this content distribution model, the users who may possess some content cannot offer it directly to other users, unless they place it on some Web server.
An alternative to this content-distribution model centered on Web servers is the peer-to-peer (P2P) model. Here, the user may directly share with other users the content he or she possesses. Each P2P protocol (Napster, Gnutella, Chord, FastTrack, etc) comes with a content location service, centralized or distributed, which permits the location of the peer(s) that contain a specified content. Using such a location service, a user looking for some specific content may connect to the device of another user who offers the content in question and retrieve it from there.
In order for P2P protocols to work over the Internet, the establishment of a connection between two peers at the edges of the Internet (e.g., PCs or smart-phones) must be possible. It is not a trivial task to satisfy this requirement, especially taking into consideration the constraints imposed by firewalls and NAT servers that are used by ISPs and CNOs to protect and control their networks.
Firewalls are used to control the data traffic that goes through them. In practice, the great majority of such firewalls allow only solicited HTTP traffic to reach a smart phone or a PC, while plain IP traffic (over TCP or UDP) is blocked. Even if a smart phone has an HTTP server, an HTTP request sent by a remote device to that server would not go through these firewalls, since the HTTP message is unsolicited by the receiving smart phone. Consequently, for such strict firewall policies, there is no straightforward way to establish a P2P connection between two peers that lie on different side of such a firewall.
NAT servers also create obstacles to a P2P connection, especially for the case where one peer is a smart phone that roams across different CNOs while connected to the Internet. In that case, while the smart phone would be connected to a P2P overlay network, it will change its IP address and consequently it will lose all socket connections that have been established to its previous IP address.
Previous attempts have been made to provide solutions to the problem of establishing P2P connections in an environment including firewalls and NAT servers, both in the fixed and in the mobile Internet cases. In the fixed Internet, a peer (PC) is assigned a possibly different IP address by a NAT server every time it connects to the network. However, as long as the peer remains connected to the network, the IP address is not changed. Hence, the problem of changing IP address while connected to the network does not appear in the fixed Internet and, consequently, existing P2P protocols do not provide solutions for such cases. However, in applications connected to the Internet by way of a mobile device, a smart phone that roams may change its IP address while being connected to the network. As such, P2P protocols from the fixed Internet cannot operate correctly.
In the fixed Internet, corporate networks can include firewalls that implement the strict security policy of allowing only solicited HTTP traffic to reach a PC connected in the corporate network. Similarly, many cellular network operator (CNO) firewalls implement the same strict security policy. A number of solutions to P2P connections despite the presence of CNO firewalls have been proposed in the context of SIP deployment, since SIP traffic faces the same constraints from the firewalls as any other, unsolicited HTTP traffic. These solutions rely on the dynamic allocation of pinholes on the firewalls to allow SIP traffic to go through. Such solutions create another case of specific traffic, similar to the solicited HTTP traffic. They are not a generic solution to the establishment of P2P connections.
There is a need to establish peer to peer (P2P) connections between PCs and smart phones despite the obstacles imposed by firewalls, which allow only solicited HTTP traffic to go though, and by NAT servers, which change the IP address of roaming smart phones. Further, there is a need for a reliable peer-to-peer communication protocol that works in a network environment including a firewall without relying on special firewall features.